1. Field
This invention relates to the field of software development.
2. Description of the Related Art
Software development includes development of new software, maintenance of developed software, and quality assurance of developed software, wherein the maintenance includes a change and/or a modification in developed software, and wherein the quality assurance includes testing and/or debugging of developed software.
In software development, one of the biggest impediments is the large, many times prohibitive, amount of resources required for developing and maintaining even a small computer program. Moreover, the resources required for software development increase exponentially in proportion to the number of features required in a computer program. Also, the required resources can further grow astronomically for computer programs that must exclude any chance of an error and/or a malfunctioning.
At the same time, the expectations and requirements from software are increasing rapidly because of the swiftly increasing processing power and capabilities of computers. However, because of the limitations of available resources, such as, human resource, financial resource, time resource, technical resource, and the like, the art is still unable to develop, and utilize software to its full potential.
To address the above serious impediment, various technologies have been developed over time, but none has been able to effectively solve this problem so far. Such technologies include CASE tools, data driven programming, table driven programming, object oriented programming, CORBA (Common Object Request Broker Architecture), MDA (Model-Driven Architecture), RAD (Rapid Application Development), software factories, and the like. All these technologies have reduced, to some extent, the resource requirements for software development. These technologies have also enabled, somewhat, efficient utilization of the resources required for software development. Simultaneously, though, ever-increasing complexities, as well as exponential rises in functional requirements from software have meant that whatever benefits emanated from such technologies have not been enough to meet the growing demands from software.
In addition to the above mentioned technologies, many computer programs and development environments have been developed for reducing the resource requirement for the software development process. Such computer programs and development environments include, but are not limited to, MS-VISUAL STUDIO, GNAT PROGRAMMING STUDIO, IBM RATIONAL APPLICATION DEVELOPER, POWERBUILDER, C++BUILDER, XCODE, NETBEANS, DELPHI, LAZARUS, CRYSTAL REPORTS, MICROSOFT ACCESS, ORACLE DATABASE, and MICROSOFT SQL SERVER. While these computer programs and development environments have managed to automate a small number of mechanical tasks, they have not been effective in reducing the excessive resource requirements for software development.
Consider, for instance, a computer application which is required to comprise a couple of hundred reports which are desired to be based on MICROSOFT SQL Server database and are specifically designed for MICROSOFT ACCESS reporting engine and a letter size paper. In the prior art, each report, along with its required query, would have to be developed by a software developer. This process may take tens of thousands of hours of a skilled computer programmer. If the same reports are required to be ported to an ORACLE platform and CRYSTAL REPORTS with report layouts for an A4 size paper, the resource expenditure might be even greater than what was required for the original development.
The humongous and unmanageable resource requirement for software development is not only related to reports and queries, but also to every stage and aspect of software development. However, despite the availability of so many technologies, environments and applications, the prior art has been unable to meet the challenge of minimizing the required resources for software development to a desired, and an effective level.
Software development should, ideally, achieve three objectives simultaneously: maximizing features, ensuring highest quality, and minimizing software development resources. However, the prior art has failed to achieve all three objectives in conjunction; in every software development, one or more of these objectives have to be compromised.